const superagent = require('superagent')
const fs = require('fs')
const path = require('path')

/**
 * 请求名称列表
 * @param url 获取列表的url地址
 * @return {Promise<Array>}
 */
function getList(url) {
    return new Promise((resolve, reject) => {
        superagent
            .get(url)
            .end((error, res) => {
                let heroList = JSON.parse(res.body.toString('utf8')).hero
                resolve(heroList.map(hero => {
                    return {
                        name: hero.name,
                        alias: hero.alias,
                        title: hero.title
                    }
                }))
            })
    })
}

/**
 * 根据alias获取图片
 * http://game.gtimg.cn/images/lol/act/img/champion/????.png
 * @param alias 英雄英文名
 * @return {Promise<Buffer>}
 */
function getHeroImg(alias) {
    return new Promise((resolve, reject) => {
        superagent
            .get(`http://game.gtimg.cn/images/lol/act/img/champion/${alias}.png`)
            .end((error, res) => {
                resolve(res.body)
            })
    })
}

/**
 *
 * @param name {String} 英雄称号
 * @param title {String} 英雄名字
 * @param buf {Buffer} 英雄图片
 */
function saveImg(name, title, buf) {
    fs.stat(path.join(__dirname, `./images`), function (error, stat) {
        if(!stat) {
            fs.mkdirSync(path.join(__dirname, `./images`))
        }
        fs.writeFile(path.join(__dirname, `./images/${name}-${title}.png`), buf, (err => err?console.log(err):''))
    })
}

let url = 'https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js'

getList(url).then(res => {
    // 获取图片
    res.forEach(item => {
        getHeroImg(item.alias).then(buf => {
            // 保存图片
            saveImg(item.name, item.title, buf)
        })
    })
})


